// ==========================================================================										
//	- EXPRESSION CPP
// ==========================================================================


#ifndef __EXPRESSION__
#define __EXPRESSION__

#include<iostream>
#include "expression.h"

// ==========================================================================
//	Constructeurs et destructeur
// ==========================================================================

//	constructeur
Expression::Expression() : Element()
{
	Type = EXPRESSION;
	Termes = new std::vector<Terme>();
	OpeAdds = new std::vector<OpeAdd>();
		
}

//destructeur
Expression::~Expression()
{
	delete Termes;
	delete OpeAdds;
}


// ==========================================================================
//	Accesseurs
// ==========================================================================

std::vector<OpeAdd>* Expression::getOpeAdds()
{
	return OpeAdds;	
}
std::vector<Terme>* Expression::getTermes()
{
	return Termes;
}

// ==========================================================================
//	Mutateurs
// ==========================================================================


// ==========================================================================
//	Méthodes
// ==========================================================================

void Expression::addTerme(Terme T )
{
	Termes->push_back(T);
}
void Expression::addOpeAdd(OpeAdd O)
{
	OpeAdds->push_back(O);
}

void Expression::clearTermes()
{
	Termes->clear();
}

void Expression::clearOpeAdds()
{
	OpeAdds->clear();
}

Netg Expression::Calcul()
{
	if(Termes->size()==1) return Termes->at(0)->Calcul();
	else
	{
		return Calcul(Termes->at(0)->Calcul(), OpeAdds->at(0), Termes->at(1).Calcul());
		
	}
}

Netg Expression::Calcul(Netg A, OpeAdd O, Netg B)
{
	Netg *tmp = new Netg();
	
	return A.addition(B);
	
	
	String resultat;
	int s;
	for(int i=0;i<A.size();i++)
	{
			s = A.getValue(i).atoi() + (int)B.getValue(i).atoi();
			char *tmpChar = const_cast<char *>(s.c_str());
			tmp->setValue(i,tmpChar);
			if (s>10)
			{
				tmpChar++;
				tmp->setValue(i+1,(tmpChar.atoi()+tmp->getValue(i+1).atoi()).toChar())
			}
	}
	
	return tmp;
	
}
#endif
